package org.chnxi.study.leetcode.questions25.ques24;

/**
 * 两两交换链表中的节点
 * 执行用时 :0 ms, 在所有 Java 提交中击败了100.00%的用户
 * 内存消耗 :37.3 MB, 在所有 Java 提交中击败了6.35%的用户
 */
public class Simple01 {

    public static void main(String[] args) {

        ListNode ln1 = new ListNode(1);
        ListNode ln2 = new ListNode(2);
        ListNode ln3 = new ListNode(3);
        ListNode ln4 = new ListNode(4);
        ln1.next = ln2;
        ln2.next = ln3;
        ln3.next = ln4;

        System.out.println(swapPairs(ln1));

    }

    public static ListNode swapPairs(ListNode head) {
        //判断是否到链表结尾
        //如果链表长度为偶数，则head为null
        //如果链表长度为技术，则head.next为null
        if(head == null || head.next == null) {
            return head;
        }

        // 提取偶数位节点
        ListNode next = head.next;
        //递归奇数位节点的next
        head.next = swapPairs(next.next);
        //将偶数位几点的next指向奇数位节点
        next.next = head;

        return next;
    }

}
